Funkcijas var izsaukt bloka Mainīgie laukā vai tieši atbildes tekstā, izmantojot #{...}:

#{discord_add_role(message_from, '1465674567090704592')}

Discord servera, kanāla, lomas un ziņojumu ID ir gari skaitliski dati. Vienkāršākais veids, kā tos nokopēt, ir iespējot Iestatījumi → Papildu → Izstrādātāja režīms. Pēc tam jebkura objekta konteksta izvēlnē parādīsies opcija Kopēt ID.

Bota savienojums ir aprakstīts rakstā Kā izveidot tērzēšanas robotu Discord.

Kur iegūt ziņojuma ID

Ziņojuma ID, kas aktivizēja bloku, tiek glabāts mainīgajā discord_message_id. Tas nav atsevišķi jāiegūst:

#{discord_delete_message(discord_message_id)}

Ja nepieciešami dati, kas nav pieejami iepriekš definētajos mainīgajos, pilns webhook ir pieejams mainīgajā discord_webhook. Tas tiek aizpildīts, kad jebkurai vērtībai tiek piešķirts mainīgais save_webhook:

data = discord_webhook["data"]

msg_id = data["id"]

result = discord_reply_to_message(msg_id, "Šī ir atbilde uz ziņojumu")

Automātiski izveidotie mainīgie

Šie mainīgie tiek automātiski aizpildīti katram notikumam un neprasa papildu konfigurāciju.

Mainīgais Apraksts Piemērs
guild_id Servera ID 1465674567090704591
discord_event Notikuma veids kā viens vārds message
discord_message_id Ziņojuma ID ar prefiksu mid mid1465674569095319625
message_from Notikuma autora ID ar prefiksu uid uid413984787162726410
from_username Autora Discord lietotājvārds 00rei
from_name Autora parādāmais vārds tērzēšanā Rus
username Lietotājvārds tiešajiem ziņojumiem botam 00rei
is_bot 1, ja notikuma autors ir cits bots 0
nickname Servera segvārds; tukšs, ja nav iestatīts Moderators
roles Autora lomu ID saraksts ["1465674567090704592"]
is_admin 1, ja lietotājs ir administrators vai servera īpašnieks 1
reply_from Autora ID, uz kura ziņojumu tiek atbildēts uid493121376652230668
reply_from_username Autora lietotājvārds, uz kuru tiek atbildēts _deikin
reply_from_name Autora parādāmais vārds, uz kuru tiek atbildēts Rus
reply_to_bot 1, ja atbilde ir botam 0
reply_message_id Ziņojuma ID, uz kuru tiek atbildēts mid1534837349219958804
reply_text Ziņojuma teksts, uz kuru tiek atbildēts kurš šodien dežurē?

Prefiksi uid, cid un mid ir daļa no vērtības. Nododiet šos mainīgos funkcijām tādus, kādi tie ir; jums nav jānoņem prefiksi.

from_name vs. from_username

from_name satur vārdu, kas jāizmanto, lai uzrunātu lietotāju tērzēšanā:

  1. Servera segvārds, ja iestatīts.
  2. Konta parādāmais vārds.
  3. Lietotājvārds.

Šis ir ieteicamais mainīgais, ko izmantot sveicienos, jo from_username var izskatīties kā _deikin vai 00rei.

Mainīgie reply_* tiek aizpildīti tikai tad, kad ienākošais ziņojums ir atbilde uz citu ziņojumu. Parastajiem ziņojumiem tie visi tiek notīrīti.

Tāpēc šāds nosacījums droši atšķir atbildi no parasta ziņojuma:

#{reply_from != ''}

Mainīgie nickname, roles un is_admin attiecas uz pašreizējā notikuma autoru.

Discord nesniedz šos datus par reakciju notikumiem, tāpēc administratora pārbaudes jāveic ziņojuma vai slīpsvītras komandas notikumā.

Ienākošā ziņojuma teksts tiek glabāts standarta mainīgajā question, tāpat kā citos kanālos.


Notikumi

Papildus parastajiem ziņojumiem piltuvē tiek nosūtīti arī pakalpojumu notikumi.

To teksts tiek glabāts mainīgajā question, tāpēc tos var apstrādāt, izmantojot parastos teksta nosacījumus.

discord_event Teksts question Kad notiek
message Ziņojuma teksts Dalībnieks nosūta ziņojumu
message_edit Atjaunināts ziņojuma teksts Ziņojums tiek rediģēts
interaction /warn @user spam Tiek izmantota slīpsvītras komanda vai noklikšķināta poga
reaction_add new_like ❤️ uid413984787162726410 Tiek pievienota reakcija
reaction_remove reaction_remove ❤️ uid413984787162726410 Tiek noņemta reakcija
message_delete message_delete mid1465674569095319625 Ziņojums tiek dzēsts
messages_delete_bulk messages_delete_bulk 12 Tiek dzēsti vairāki ziņojumi
member_join member_join uid413984787162726410 Dalībnieks pievienojas serverim
member_leave member_leave uid413984787162726410 Dalībnieks pamet serveri
member_update member_update uid413984787162726410 Dalībnieka segvārds vai lomas mainās
member_ban member_ban uid413984787162726410 Dalībnieks tiek bloķēts
member_unban member_unban uid413984787162726410 Dalībnieks tiek atbloķēts

Pielāgotai reakcijai emocijzīmes vietā tiek izmantots pielāgotās emocijzīmes ID:

new_like beer:1479419477396291696 uid413984787162726410

Skatiet sadaļu Reakcijas, lai iegūtu sīkāku informāciju.

Ja blokam vajadzētu aktivizēties tikai parastajiem dalībnieku nosūtītajiem ziņojumiem, pievienojiet šādu nosacījumu:

discord_event == 'message'

Tas uzreiz filtrē visus pakalpojumu notikumus.

Pārbaudīt tikai notikuma tekstu ir neuzticami, jo dalībnieks var manuāli nosūtīt ziņojumu, piemēram, member_join.

Svarīgi: member_update tiek aktivizēts ar jebkuru dalībnieka atjauninājumu, ieskaitot lomu, ko piešķīris pats bots. Bloks, kas reaģē uz member_update un piešķir lomu, var izveidot cilpu, tāpēc šādi nosacījumi vienmēr ir atbilstoši jāierobežo.


Ziņojumi

Funkcija Apraksts
discord_send_message(channel_id, text) Nosūtīt ziņojumu jebkuram kanālam
discord_send_dm(user_id, text) Nosūtīt tiešo ziņojumu dalībniekam
discord_reply_to_message(message_id, text) Atbildēt uz ziņojumu
discord_edit_message(message_id, text) Rediģēt bota nosūtītu ziņojumu
discord_delete_message(message_id) Dzēst ziņojumu
discord_bulk_delete_messages(channel_id, message_ids) Dzēst vairākus ziņojumus vienlaikus
discord_get_message(channel_id, message_id) Iegūt ziņojumu
discord_pin_message(message_id) Piespraust ziņojumu
discord_unpin_message(message_id) Atsprāgt ziņojumu

Discord ierobežojumi: Nav laika ierobežojuma savu ziņojumu rediģēšanai vai dzēšanai. Lielapjoma dzēšana darbojas tikai ziņojumiem, kas ir jaunāki par 14 dienām, un vienlaikus var dzēst no 2 līdz 100 ziņojumiem.


Reakcijas

Funkcija Apraksts
discord_send_reaction(message_id, reaction) Pievienot reakciju
discord_delete_reaction(message_id, reaction, user_id) Noņemt reakciju. Ja user_id ir izlaists, tiek noņemta bota reakcija

Parametrs reaction pieņem vai nu parastu emocijzīmi, piemēram, ❤️, vai pielāgotas servera emocijzīmes ID.

Kur iegūt pielāgotas reakcijas ID

Pievienojiet nepieciešamo pielāgoto reakciju jebkuram ziņojumam kanālā.

Tērzēšanā parādīsies šāds atsauksmes zvans:

new_like beer:1479419477396291696 uid413984787162726410

Šeit:

beer:1479419477396291696

ir reakcijas ID.

Varat to nokopēt un izmantot reakciju funkcijās:

#{discord_send_reaction(discord_message_id, 'beer:1479419477396291696')}

Parastās emocijzīmes atsauksmes zvanos parādās tādas, kādas tās ir:

new_like ❤️ uid413984787162726410

kur uid413984787162726410 ir dalībnieka ID, kurš pievienoja reakciju.


Moderācija

Funkcija Apraksts
discord_timeout_member(user_id, seconds) Iestatīt dalībniekam pārtraukumu uz norādīto sekunžu skaitu, līdz 28 dienām
discord_remove_timeout(user_id) Priekšlaicīgi noņemt pārtraukumu
discord_kick_member(user_id) Izmest dalībnieku no servera; viņš var atgriezties, izmantojot ielūgumu
discord_ban_member(user_id, delete_message_seconds) Bloķēt dalībnieku; otrais arguments norāda, cik sekunžu ziņojumu vēsturi dzēst, līdz 7 dienām
discord_unban_member(user_id) Atbloķēt dalībnieku

Discord neļauj botam moderēt dalībnieku, kura loma ir augstāka par bota lomu. Servera īpašnieku arī nevar moderēt.


Lomas un dalībnieki

Funkcija Apraksts
discord_add_role(user_id, role_id) Piešķirt lomu
discord_remove_role(user_id, role_id) Noņemt lomu
discord_get_roles() Iegūt servera lomas un to ID
discord_get_member(user_id) Iegūt dalībnieka datus, ieskaitot segvārdu, lomas un pievienošanās datumu
discord_set_nickname(user_id, nickname) Mainīt dalībnieka servera segvārdu

Bota lomai jābūt augstākai par lomu, ko tā piešķir.

Lomu @everyone un lomas, ko pārvalda integrācijas, ieskaitot citu botu lomas, nevar piešķirt.


Kanāli un biļetes

Funkcija Apraksts
discord_create_channel(name, type, parent_id, permission_overwrites) Izveidot kanālu
discord_delete_channel(channel_id) Dzēst kanālu
discord_set_channel_permission(channel_id, target_id, allow, deny, type) Atļaut vai liegt kanāla atļaujas
discord_create_invite(channel_id, max_age, max_uses) Izveidot ielūguma saiti
discord_get_invites() Iegūt servera ielūguma saites

Funkcijai discord_create_channel noklusējuma type ir:

Vērtība Kanāla veids
0 Teksta kanāls
2 Balss kanāls
4 Kategorija

Varat nodot kategorijas ID parent_id, lai izveidotu kanālu šajā kategorijā.

Funkcijai discord_set_channel_permission pēdējais arguments norāda, kurš saņem atļaujas:

Vērtība Mērķis
1 Dalībnieks
0 Loma

Parametri allow un deny pieņem šādas vērtības:

Vērtība Atļauja
1024 Skatīt kanālu
2048 Sūtīt ziņojumus
3072 Skatīt kanālu un sūtīt ziņojumus
65536 Lasīt ziņojumu vēsturi

Funkcijai discord_create_invite ielūguma derīguma termiņš ir norādīts sekundēs.

Piemēram:

86400

nozīmē 24 stundas.

Vērtība max_uses ar 0 nozīmē neierobežots lietojumu skaits.


Slīpsvītras komandas

Funkcija Apraksts
discord_get_commands() Iegūt serverī reģistrētās komandas
discord_set_commands(commands) Aizstāt visu komandu kopu

discord_set_commands pieņem komandu sarakstu:

#{discord_set_commands('[
  {
    "name": "rules",
    "description": "Rādīt servera noteikumus"
  },
  {
    "name": "warn",
    "description": "Izsniegt brīdinājumu",
    "options": [
      {
        "type": 6,
        "name": "user",
        "description": "Lietotājs",
        "required": true
      },
      {
        "type": 3,
        "name": "reason",
        "description": "Iemesls",
        "required": false
      }
    ]
  }
]')}

Discord prasības

  • name jāsatur tikai mazie burti, bez atstarpēm, un tā garumam jābūt no 1 līdz 32 rakstzīmēm.
  • description ir obligāts un tā garumam jābūt no 1 līdz 100 rakstzīmēm.
  • Obligātās opcijas jāparādās pirms neobligātajām opcijām.
  • Tukša saraksta nodošana noņem visas bota komandas no servera.

Opciju veidi

Veids Apraksts
3 Virkne
4 Vesels skaitlis
5 Būla vērtība
6 Dalībnieks
7 Kanāls
8 Loma

Kad komanda tiek izsaukta, tā tiek nosūtīta piltuvei kā virkne, piemēram:

/warn @user spam

Citiem vārdiem sakot, komandas nosaukums un opciju vērtības ir atdalītas ar atstarpēm.

To var apstrādāt, izmantojot parastu teksta nosacījumu.

Atsevišķa funkcija pogām nav nepieciešama. Pogas tiek konfigurētas parastajā atbildes blokā, un pogas klikšķis tiek saņemts tāpat kā slīpsvītras komanda: pogas vērtība parādās tekstā.


Punkti un līderu saraksts

Discord integrācija ietver iebūvētu atzinības sistēmu. Punkti tiek piešķirti citētā ziņojuma autoram.

To var izmantot, lai izveidotu līmeņus, rindas un līderu sarakstus.

Funkcija Apraksts
discord_add_thanks_score(value) Pievienot punktus citētā ziņojuma autoram
discord_add_thanks_score_for_answer(value) Pievienot punktus dalībniekam, kurš atbildēja
discord_minus_thanks_score(value) Noņemt punktus
discord_get_score(user_id) Atgriezt dalībnieka punktus kā skaitli. Bez argumenta izmanto notikuma autoru
discord_get_level(user_id, points_per_level) Iegūt dalībnieka līmeni. Noklusējuma slieksnis: 100 punkti uz līmeni
discord_get_user_info(user_id) Iegūt punktus, līderu saraksta pozīciju un vārdu kā vienu objektu
discord_get_top(count, shift, humanize, delimiter) Iegūt līderu sarakstu

discord_get_top funkcijai:

  • count — atgriežamo rindu skaits;
  • shift — izlaižamo rindu skaits, noderīgs lapošanai;
  • humanize=true — atgriež gatavu attēlošanai tekstu;
  • delimiter — atdalītājs starp dalībnieka vārdu un punktiem.

Salīdzinot punktus bloka nosacījumā, izmantojiet discord_get_score. Šī funkcija atgriež skaitli, tāpēc skaitliskie salīdzinājumi darbojas kā paredzēts.


Piemēri

Sagaidīt jaunu dalībnieku ar privātu ziņojumu

Bloka nosacījums:

member_join

Laukā Mainīgie:

discord_send_dm(
    message_from,
    'Sveiks, #{from_name}! Apskati piespraustos noteikumus.'
)

Dzēst ziņojumu, kas satur aizliegtu vārdu, un uzlikt dalībniekam pārtraukumu uz 24 stundām

Bloka nosacījums: aizliegto vārdu saraksts.

Papildu nosacījums:

is_admin != 1

Funkcijas:

discord_delete_message(discord_message_id)

discord_timeout_member(message_from, 86400)

Piešķirt lomu par reakciju uz konkrētu ziņojumu

Bloka nosacījums:

new_like 🍕

Papildu nosacījums:

contains(discord_message_id, '1534927170965602324')

Funkcija:

discord_add_role(
    message_from,
    '1465674567090704592'
)

Izveidot privātu biļešu kanālu no pogas

ticket = discord_create_channel(
    'ticket-' + from_username
)

ticket_channel = get(
    get(ticket, 'data'),
    'id'
)

discord_set_channel_permission(
    ticket_channel,
    guild_id,
    None,
    1024,
    0
)

discord_set_channel_permission(
    ticket_channel,
    message_from,
    3072,
    None,
    1
)

discord_send_message(
    ticket_channel,
    'Apraksti savu problēmu vienā ziņojumā.'
)

Pirmā atļauju rinda slēpj kanālu no visiem (guild_id šeit apzīmē @everyone lomu).

Otrā rinda padara kanālu pieejamu dalībniekam, kurš izveidoja biļeti.


Piešķirt punktus par pateicību un piešķirt lomu, pamatojoties uz līmeni

Bloka nosacījums:

thanks;thx;thank you

Papildu nosacījums:

reply_from != '' and reply_from != message_from and reply_to_bot != 1

Funkcijas:

discord_add_thanks_score(1)

if (discord_get_level(reply_from) >= 1) {
    discord_add_role(
        reply_from,
        '1465674567090704592'
    )
}

Nosacījums:

reply_from != message_from

neļauj dalībniekiem piešķirt punktus sev.

Nosacījums:

reply_to_bot != 1

neļauj piešķirt punktus botam.


Parādīt savus punktus ar komandu

Bloka nosacījums:

/xp

Laukā Mainīgie:

points = discord_get_score()

lvl = discord_get_level()

Atbildes teksts:

#{from_name}, tev ir #{points} XP · Līmenis #{lvl}

Parādīt līderu sarakstu ar komandu

Bloka nosacījums:

/top

Atbildes teksts:

🏆 XP līderu saraksts:

#{discord_get_top(10, 0, true, ' — ')}